/**
 * AOP（面向切面编程）中的方法调用接口
 * 该接口用于在AOP框架中描述一个方法的执行
 * 它提供了获取方法信息、方法参数、目标对象以及执行方法的功能
 */
package com.test.aop;

import java.lang.reflect.Method;

/**
 * 方法调用接口
 * 该接口用于在AOP框架中描述一个方法的执行
 * 它提供了获取方法信息、方法参数、目标对象以及执行方法的功能
 */
public interface MethodInvocation {

    /**
     * 获取当前方法调用的方法对象
     *
     * @return 当前方法调用的方法对象
     */
    Method getMethod();

    /**
     * 获取当前方法调用的参数
     *
     * @return 当前方法调用的参数数组
     */
    Object[] getArguments();

    /**
     * 获取当前方法调用的目标对象
     *
     * @return 当前方法调用的目标对象
     */
    Object getThis();

    /**
     * 执行当前方法调用
     *
     * @return 方法执行的结果
     * @throws Throwable 如果方法执行过程中抛出异常
     */
    Object proceed() throws Throwable;
}
